Moodle™(開放原始碼的線上學習管理系統,以PHP開發,相容DB有MySQL、PostgreSQL、MSSQL等資料庫),跨Linux、Windows平台,支援全球150餘國、70種語系、1.27億用戶。
Moodle.org 本月19日發佈登入表單漏洞(MSA-18-0020:The login form is not protected by a token to prevent login cross-site request forgery.)。
TWCERT/CC 也於11/22發佈電子學習平台Moodle登入介面具嚴重CSRF缺陷,現已修補建議各級學校計算機中心儘速部署適合版本。
據本公司資深工程師表示,這個漏洞主要是因為最近幾個新版本中加入的 login token 的功能(為了跟舊程相容,多增加了$CFG->disablelogintoke這個變數),本來是用來保護使用者session 的(對抗CSRF),但因為Moodle 的config可能被設定將login token設定成disable, 反而關閉了這個功能。
CSRF概念網上很多文章請自行google。
要判斷你的Moodle有没有可能中標;TWCERT/CC 寫的有點複雜,這裡筆者整理較簡單的方式:
這個問題出在前一個版本(3.1.14, 3.3.8, 3.4.5, 3.5.2)的設計上, config.php 如果被加了disablelogintoken=true,就不檢查token。
基本上官方不更新了,請自行處理;不然就是找國內 Moodle 維護廠商.
版本 3.1.13, 3.3.7, 3.4.4, 3.5.1 這些版本(含)以前, 如果已有客製(不能更版), 請在自行 login form 加入token 檢查機制, 並不一定要跟著更版。
版本在 3.1.14, 3.3.8, 3.4.5, 3.5.2 請直接更新到 3.1.15, 3.3.9, 3.4.5, 3.5.3。
以上資訊來自本公司Moodle 對國內Moodle修正的記錄, 詳細請參考文內連結網站, 如有錯誤, 敬請指教, 謝謝.